﻿'''
题目描述
实现一个模拟目录管理功能的软件，输入一个命令序列，输出最后一条命令运行结果。
支持命令：
创建目录命令：mkdir 目录名称，如 mkdir abc 为在当前目录创建abc目录，如果已存在同名目录则不执行任何操作。此命令无输出。
进入目录命令：cd 目录名称，如 cd abc 为进入abc目录，特别地，cd … 为返回上级目录，如果目录不存在则不执行任何操作。此命令
无输出。
查看当前所在路径命令：pwd，输出当前路径字符串。
约束：
目录名称仅支持小写字母；mkdir 和 cd 命令的参数仅支持单个目录，如：mkdir abc 和 cd abc；不支持嵌套路径和绝对路径，如
mkdir abc/efg，cd abc/efg，mkdir /abc/efg，cd /abc/efg 是不支持的。
目录符号为/，根目录/作为初始目录。
任何不符合上述定义的无效命令不做任何处理并且无输出。
输入描述
输入 N 行字符串，每一行字符串是一条命令。
命令行数限制100行以内，目录名称限制10个字符以内。
输出描述
输出最后一条命令运行结果字符串。
示例1
输入
mkdir abc
cd abc
pwd
输出
/abc/
说明
在根目录创建一个abc的目录并进入abc目录中查看当前目录路径，输出当前路径/abc/。
解题思路
定义一个节点类（Node），用于表示文件系统中的每个目录。该类包含路径信息和一个映射，映射存储子目录和对应的节点对象。
创建一个根节点实例，代表文件系统的根目录。根目录没有父目录。
读取用户输入，根据输入的命令和参数执行相应的操作。
如果输入的是创建目录的命令（例如，“mkdir”），检查目录名是否有效，然后在当前节点下创建新的子目录节点。
如果输入的是切换目录的命令（例如，“cd”），检查目标目录是否存在，如果存在，则更新当前节点为目标节点。
如果输入的是打印当前目录路径的命令（例如，“pwd”），则输出当前节点的路径信息。
循环读取输入直到结束，并在结束时输出最后的路径信息。
'''
#定义一个类Node,用于表示文件系统中的每个目录
class Node:
    def __init__(self,path,parent):
        self.path = path    #目录的路径
        self.next = {}      #存储当前目录下的子目录，键为目录名，值为对应的Node对象
        if parent:
            self.next['..'] = parent    #存在父目录，则加一个父目录的条目
#检查目录是否有效,是否全部由小写字母组成
def is_valid_directory_name(name):
    return name.islower() and name.isalpha()
#检查是否可以切换到指定的目录,要么目录名有效，要么是'..'表示上级目录
def is_valid_change_directory(name):
    return name == '..' or is_valid_directory_name(name)
#创建根目录节点，根目录没父目录，所以第二个参数为None
root = Node('/',None)
current_node = root #初始化当前目录为根目录
last_output = ''    #用于存储最后输出的路径

#循环读取用户输入的命令
try:
    while True:
        input_command = input().strip()
        if not input_command:
            break
        parts = input_command.split()   #将输入的命令按空格分割为命令和参数
        command = parts[0]

        #注意判断输入命令的长度
        if command == 'mkdir' and len(parts) == 2 and is_valid_directory_name(parts[1]):
            #处理mkdir命令，用于创建新的子目录
            if parts[1] not in current_node.next:   #子目录不存在
                current_node.next[parts[1]] = Node(current_node.path + parts[1] + '/',current_node)
        elif command == 'cd' and len(parts) == 2 and is_valid_change_directory(parts[1]):
            #处理cd命令，用于改变当前目录
            next_node = current_node.next.get(parts[1])
            if next_node:   #如果目录存在，切换到该目录
                current_node = next_node    
        elif command == 'pwd' and len(parts) == 1:
            #处理pwd命令，用于打印当前目录路径
            last_output = current_node.path
except EOFError:
    pass
#输出结果
print(last_output)

